// 用于存放共用的state状态
import { ISUSERLOGIN, ISUSERREGISTER, CHANGESPINACTIVATE, GETUSERBASEINFO, CHANGEPAGEACTIVATE,
         CHANGEBASEUSERINFO, CHANGESEARCHVALUEACTIVATE, CHANGETASKTYPEIDACTIVATE,CHANGEADMINLOGINACTIVATE,    
} from "../constants"

const initState = {
    // 用户是否登录注册
    userLoginState:{
        isLogin: false,
        isRegister: false

    },

    // 管理员登录，管理页面中显示哪个表单
    adminLoginState: {
        isLogin: false,
        form_num: 0, // 0：待审核， 1：审核通过， 2：审核不通过
    },

    // 获取用户基础信息
    baseUserInfo:{
        nickname: "", // 昵称
        username: "", // 用户账号
        email: "", // 联系email
        userintro: "", // 用户自我介绍
        gender: "",  // 用户性别
        // 下面的获取的状态之后开发会用到2-24
        money: 0, // 用户拥有的金币
        success_task_num: 0, // 成功的任务量
        fail_task_num: 0, // 失败的任务数量
        tasks_num: 0, // 接取所有的任务量
        will_tasks_num: 0, // 未执行任务
        user_identity: 1, // 1:猎人身份（默认）, 0: 雇主身份
    },
    // 加载状态
    spinState: {
        forgetpasswd_activate: false, // 忘记密码
        register_activate: false, // 注册点击按钮
        sendTask_activate: false, // 任务发布按钮
        getContent_activate: false, // 向领取任务页向后端请求数据
    },

    // 用户查看到的页数
    page: 1,
    // search 搜索的value
    search_value: "",
    // task type id 
    task_type_id: "0"
}

export default function PublicReducer (preState=initState, action) {
    const {type, data} = action
    // console.log("11111",preState)
    switch (type) {
        case CHANGEBASEUSERINFO:
            return {
                ...preState,
                baseUserInfo: Object.assign({}, preState.baseUserInfo, data)
            }
        case ISUSERLOGIN:
            // console.log("已进入修改公共状态", data)
            return {
                ...preState,
                userLoginState: Object.assign({}, preState.userLoginState, data)
            }
        case ISUSERREGISTER:
            // console.log("用户修改了注册状态", preState)
            return {
                ...preState,
                userLoginState: Object.assign({}, preState.userLoginState, data)
            }
        case CHANGESPINACTIVATE:
            return {
                ...preState,
                spinState: Object.assign({}, preState.spinState, data)
            }
        // 一个方法记录用户的基本信息
        case GETUSERBASEINFO:
            return {
                ...preState,
                baseUserInfo: Object.assign({}, preState.baseUserInfo, data)
            }
        // 记录用户的浏览的page
        case CHANGEPAGEACTIVATE:
            return {
                ...preState,
                page: data.page
            }
        // 修改搜索内容
        case CHANGESEARCHVALUEACTIVATE:
            return {
                ...preState,
                search_value: data.search_value
            }
        case CHANGETASKTYPEIDACTIVATE:
            return {
                ...preState,
                task_type_id: data.task_type_id
            }
        // 修改admin登录状态
        case CHANGEADMINLOGINACTIVATE:
            return {
                ...preState,
                adminLoginState: Object.assign({}, preState.adminLoginState, data)
            }
        default:
            // return {...preState} // 会导致数据持久化失效
            var state = preState
            return state
    }
}